package com.tsx.leetcode.hot100.easy;

/**
 * <a href="https://leetcode.cn/problems/best-time-to-buy-and-sell-stock">买卖股票的最佳时机</a>
 * 更新前 i 天的最低价格，即最低买入成本 cost；
 * 更新前 i 天的最高利润 profit ，即选择「前 i−1 天最高利润 profit 」和「第 i 天卖出的最高利润 price - cost 」中的最大值 ；
 */
public class Q121MaxProfit {
    public static void main(String[] args) {
        int[] prices = new int[]{7, 1, 5, 3, 6, 4};
        int maxProfit = maxProfit(prices);
        System.out.println("maxProfit = " + maxProfit);
    }

    /**
     * 如果第i天卖出股票，则最大利润为(该天的股价-前面天数中最小的股价)，然后与已知的最大利润比较，如果大于则更新当前最大利润的值
     */
    public static int maxProfit(int[] prices) {
        int cost = Integer.MAX_VALUE, profit = 0;
        for (int price : prices) {
            cost = Math.min(cost, price);
            profit = Math.max(profit, price - cost);
        }
        return profit;
    }
}
